{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Practical Statistics for Data Scientists (Python)\n",
    "# Chapter 3. Statistial Experiments and Significance Testing\n",
    "> (c) 2019 Peter C. Bruce, Andrew Bruce, Peter Gedeck"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Import required Python packages."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:41:55.755085Z",
     "iopub.status.busy": "2022-04-26T19:41:55.754759Z",
     "iopub.status.idle": "2022-04-26T19:41:57.008376Z",
     "shell.execute_reply": "2022-04-26T19:41:57.007576Z"
    }
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "from pathlib import Path\n",
    "import random\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "from scipy import stats\n",
    "import statsmodels.api as sm\n",
    "import statsmodels.formula.api as smf\n",
    "from statsmodels.stats import power\n",
    "\n",
    "import matplotlib.pylab as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:41:57.011631Z",
     "iopub.status.busy": "2022-04-26T19:41:57.011384Z",
     "iopub.status.idle": "2022-04-26T19:41:57.328759Z",
     "shell.execute_reply": "2022-04-26T19:41:57.328082Z"
    }
   },
   "outputs": [],
   "source": [
    "try:\n",
    "    import common\n",
    "    DATA = common.dataDirectory()\n",
    "except ImportError:\n",
    "    DATA = Path().resolve() / 'data'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Define paths to data sets. If you don't keep your data in the same directory as the code, adapt the path names."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:41:57.332112Z",
     "iopub.status.busy": "2022-04-26T19:41:57.331921Z",
     "iopub.status.idle": "2022-04-26T19:41:57.335862Z",
     "shell.execute_reply": "2022-04-26T19:41:57.335174Z"
    }
   },
   "outputs": [],
   "source": [
    "WEB_PAGE_DATA_CSV = DATA / 'web_page_data.csv'\n",
    "FOUR_SESSIONS_CSV = DATA / 'four_sessions.csv'\n",
    "CLICK_RATE_CSV = DATA / 'click_rates.csv'\n",
    "IMANISHI_CSV = DATA / 'imanishi_data.csv'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Resampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:41:57.338189Z",
     "iopub.status.busy": "2022-04-26T19:41:57.337928Z",
     "iopub.status.idle": "2022-04-26T19:41:57.348869Z",
     "shell.execute_reply": "2022-04-26T19:41:57.347829Z"
    }
   },
   "outputs": [],
   "source": [
    "session_times = pd.read_csv(WEB_PAGE_DATA_CSV)\n",
    "session_times.Time = 100 * session_times.Time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:41:57.351676Z",
     "iopub.status.busy": "2022-04-26T19:41:57.351460Z",
     "iopub.status.idle": "2022-04-26T19:41:57.458249Z",
     "shell.execute_reply": "2022-04-26T19:41:57.457423Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = session_times.boxplot(by='Page', column='Time',\n",
    "                           figsize=(4, 4))\n",
    "ax.set_xlabel('')\n",
    "ax.set_ylabel('Time (in seconds)')\n",
    "plt.suptitle('')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:41:57.461597Z",
     "iopub.status.busy": "2022-04-26T19:41:57.461309Z",
     "iopub.status.idle": "2022-04-26T19:41:57.472375Z",
     "shell.execute_reply": "2022-04-26T19:41:57.471581Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "35.66666666666667\n"
     ]
    }
   ],
   "source": [
    "mean_a = session_times[session_times.Page == 'Page A'].Time.mean()\n",
    "mean_b = session_times[session_times.Page == 'Page B'].Time.mean()\n",
    "print(mean_b - mean_a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following code is different to the R version. idx_A and idx_B are reversed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:41:57.475366Z",
     "iopub.status.busy": "2022-04-26T19:41:57.475178Z",
     "iopub.status.idle": "2022-04-26T19:41:57.484099Z",
     "shell.execute_reply": "2022-04-26T19:41:57.483327Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-34.84761904761906\n"
     ]
    }
   ],
   "source": [
    "# Permutation test example with stickiness\n",
    "def perm_fun(x, nA, nB):\n",
    "    n = nA + nB\n",
    "    idx_B = set(random.sample(range(n), nB))\n",
    "    idx_A = set(range(n)) - idx_B\n",
    "    return x.loc[list(idx_B)].mean() - x.loc[list(idx_A)].mean()\n",
    "    \n",
    "nA = session_times[session_times.Page == 'Page A'].shape[0]\n",
    "nB = session_times[session_times.Page == 'Page B'].shape[0]\n",
    "print(perm_fun(session_times.Time, nA, nB))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:41:57.486863Z",
     "iopub.status.busy": "2022-04-26T19:41:57.486662Z",
     "iopub.status.idle": "2022-04-26T19:41:58.340105Z",
     "shell.execute_reply": "2022-04-26T19:41:58.339396Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAHqCAYAAADLbQ06AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABDpUlEQVR4nO3deXhN5/738U8ig0QmQSQhgymGqrFFitKKJngcyjmnNK3haHUQQ6mqp6foSGl1pD2/U034lVJHqy01E9RUUyjShDSKSsxEDEFyP3947GNLTLF1r/B+Xde+2Pe611rftfZOPllrr7VvF2OMEQAAsCRXZxcAAACujqAGAMDCCGoAACyMoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDC3JxdgBUUFBRo//798vX1lYuLi7PLAQDc4YwxOnnypEJDQ+Xqeu1jZoJa0v79+xUWFubsMgAAd5m9e/eqcuXK1+xDUEvy9fWVdHGH+fn5ObkaACVFrVq1lJWVpZCQEP3666/OLgclSE5OjsLCwmz5cy0EtWQ73e3n50dQA7hhl05Zurq68rsDxXIjH7dyMRkAABZGUAMAYGEENQAAFkZQAwBgYQQ1AAAWRlADAGBhBDUAABZGUAMAYGEENQAAFkZQAwBgYQQ1AAAWRlADAGBhBDUAABZGUAMAYGEENQAAFkZQAwBgYQQ1AAAW5ubsAgA4V+TLc5227t1jOjht3UBJwRE1AAAWRlADAGBhBDUAABZGUAMAYGEENQAAFkZQAwBgYQQ1AAAWRlADAGBhBDUAABZGUAMAYGEENQAAFkZQAwBgYQQ1AAAWRlADAGBhBDUAABZGUAMAYGEENQAAFkZQAwBgYQQ1AAAWRlADAGBhBDUAABZGUAMAYGEENQAAFkZQAwBgYQQ1AAAWRlADAGBhBDUAABZGUAMAYGEENQAAFkZQAwBgYQQ1AAAWRlADAGBhbs4uAABQtD179ujw4cPOLqNEK1++vMLDw51dxi0hqAHAgvbs2aPatWvr9OnTzi6lRPP29lZqamqJDmuCGgAs6PDhwzp9+rS+/PJL1a5d29nllEipqal64okndPjwYYIaAHB71K5dW40aNXJ2GXAiLiYDAMDCCGoAACyMoAaAO1hkZKQ++OADZ5fhMHfa9twIghoASqi9e/fqH//4h0JDQ+Xh4aGIiAgNHDhQR44ccXZpcCCCGgBKoN9++0333Xefdu7cqa+++kq7du3SZ599piVLlig6OlpHjx51Sl35+fkqKChwyrrvVAQ1AJRA/fr1k4eHhxYuXKhWrVopPDxc7dq10+LFi/XHH3/olVdesfU9efKkunfvrjJlyqhSpUqaMGGCbZoxRqNGjVJ4eLg8PT0VGhqqAQMG2Kbn5eXpxRdfVKVKlVSmTBk1bdpUycnJtulJSUkKCAjQ999/rzp16sjT01Off/65SpcurePHj9vVPHDgQD388MO25z/99JNatmwpLy8vhYWFacCAATp16pRt+sGDB9WxY0d5eXmpSpUqmjp1qgP3YMlBUANACXP06FEtWLBAzz//vLy8vOymBQcHKz4+XjNmzJAxRpI0btw41a9fX5s3b9bLL7+sgQMHatGiRZKkWbNm6f3339e//vUv7dy5U7Nnz9a9995rW15CQoLWrFmj6dOna+vWrfrb3/6muLg47dy509bn9OnTeuedd/T5559r+/btio+PV0BAgGbNmmXrk5+frxkzZig+Pl6SlJGRobi4OHXt2lVbt27VjBkz9NNPPykhIcE2T69evbR3714tW7ZM//nPfzRx4kQdPHjQ8TvU4pwa1KNHj9b9998vX19fBQUFqXPnzkpLS7Prc/bsWfXr10/lypWTj4+PunbtqgMHDtj12bNnjzp06CBvb28FBQVp6NChunDhwp+5KQDwp9m5c6eMMVf9IpTatWvr2LFjOnTokCSpefPmevnllxUVFaX+/fvrr3/9q95//31JF39/BgcHKyYmRuHh4WrSpImefvpp27TExETNnDlTLVu2VLVq1fTiiy+qRYsWSkxMtK3v/Pnzmjhxoh544AHVrFlTZcqUUbdu3TRt2jRbnyVLluj48ePq2rWrpIu//+Pj4zVo0CDVqFFDDzzwgD766CNNmTJFZ8+eVXp6uubNm6d///vfatasmRo3bqxJkybpzJkzt2WfWplTv/Bk+fLl6tevn+6//35duHBB//f//l898sgj2rFjh8qUKSNJeuGFFzR37lzNnDlT/v7+SkhIUJcuXbRq1SpJF/9K69Chg4KDg7V69WplZWWpR48ecnd319tvv+3MzQOuKfLluU5b9+4xHZy2bjjOpSPm64mOji70/NKV03/729/0wQcfqGrVqoqLi1P79u3VsWNHubm56ZdfflF+fr6ioqLs5s/Ly1O5cuVszz08PFSvXj27PvHx8WrWrJn279+v0NBQTZ06VR06dFBAQIAkacuWLdq6davd6WxjjAoKCpSZman09HS5ubmpcePGtum1atWyzX83cWpQz58/3+55UlKSgoKCtHHjRj344IM6ceKEJk2apGnTptk+10hMTFTt2rW1du1aNWvWTAsXLtSOHTu0ePFiVaxYUQ0aNNAbb7yhYcOGadSoUfLw8HDGpgHAbVO9enW5uLgoNTVVjz76aKHpqampKlu2rCpUqHDdZYWFhSktLU2LFy/WokWL9Pzzz2vcuHFavny5cnNzVapUKW3cuFGlSpWym8/Hx8f2fy8vL7m4uNhNv//++1WtWjVNnz5dzz33nL799lslJSXZpufm5uqZZ56x+zz8kvDwcKWnp1+39ruFpT6jPnHihCQpMDBQkrRx40adP39eMTExtj61atVSeHi41qxZI0las2aN7r33XlWsWNHWJzY2Vjk5Odq+ffufWD0A/DnKlSuntm3bauLEiYVOBWdnZ2vq1Kl67LHHbOG5du1auz5r1661O23u5eWljh076qOPPlJycrLWrFmjX375RQ0bNlR+fr4OHjyo6tWr2z2Cg4OvW2d8fLymTp2qH374Qa6ururQ4b9ncho1aqQdO3YUWm716tXl4eGhWrVq6cKFC9q4caNtnrS0tEIXqN0NLBPUBQUFGjRokJo3b666detKuviG8/DwKHSqo2LFisrOzrb1uTykL02/NK0oeXl5ysnJsXsAQEnyySefKC8vT7GxsVqxYoX27t2r+fPnq23btqpUqZLeeustW99Vq1Zp7NixSk9P14QJEzRz5kwNHDhQ0sUzmZMmTdK2bdv022+/6csvv5SXl5ciIiIUFRWl+Ph49ejRQ998840yMzP1888/a/To0Zo79/of3cTHx2vTpk1666239Ne//lWenp62acOGDdPq1auVkJCglJQU7dy5U999953tYrKaNWsqLi5OzzzzjNatW6eNGzfqqaeeKnTx3N3AMkHdr18/bdu2TdOnT7/t6xo9erT8/f1tj7CwsNu+TgBwpBo1amjDhg2qWrWq/v73v6tatWrq27evHnroIa1Zs8Z2ZlKShgwZog0bNqhhw4Z68803NX78eMXGxkqSAgIC9O9//1vNmzdXvXr1tHjxYv3www+2z6ATExPVo0cPDRkyRDVr1lTnzp21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gLtdsU59jx07Vm3atNGGDRt07tw5vfTSS9q+fbuOHj2qVatWObpGAADuWsU6oq5bt67S09PVokULderUSadOnVKXLl20efNmVatWzdE1AgBw17rpI+rz588rLi5On332mV555ZXbURMAOFXky3NvqF/2ibO2f290nuvZPaaDQ5aDO8dNH1G7u7tr69att6MWAABwhWKd+n7iiSc0adIkR9cCAACuUKyLyS5cuKAvvvhCixcvVuPGjQt9x/f48eMdUhwAAHe7mzqi/u2331RQUKBt27apUaNG8vX1VXp6ujZv3mx7pKSk3PDyVqxYoY4dOyo0NFQuLi6aPXu23XRjjEaMGKGQkBB5eXkpJiZGO3futOtz9OhRxcfHy8/PTwEBAerTp49yc3NvZrMAALCsmwrqGjVq6PDhw1q2bJmWLVumoKAgTZ8+3fZ82bJlWrp06Q0v79SpU6pfv74mTJhQ5PSxY8fqo48+0meffaZ169apTJkyio2N1dmzZ2194uPjtX37di1atEhz5szRihUr1Ldv35vZLAAALOumTn1fOTrWvHnzdOrUqWKvvF27dmrXrt1V1/XBBx/on//8pzp16iRJmjJliipWrKjZs2erW7duSk1N1fz587V+/Xrdd999kqSPP/5Y7du317vvvqvQ0NBi1wYAgBXc0jCXt3NYy8zMTGVnZysmJsbW5u/vr6ZNm2rNmjWSpDVr1iggIMAW0pIUExMjV1dXrVu37rbVBgDAn+WmjqhdXFzk4uJSqO12yM7OliRVrFjRrr1ixYq2adnZ2QoKCrKb7ubmpsDAQFufouTl5SkvL8/2PCcnx1FlAwDgUDd96rtXr162gTfOnj2rZ599ttBV3998843jKrwNRo8erddee83ZZQAAcF03FdQ9e/a0e/7EE084tJjLBQcHS5IOHDigkJAQW/uBAwfUoEEDW5+DBw/azXfhwgUdPXrUNn9Rhg8frsGDB9ue5+TkKCwszIHVAwDgGDcV1ImJiberjkKqVKmi4OBgLVmyxBbMOTk5WrdunZ577jlJUnR0tI4fP66NGzeqcePGkqSlS5eqoKBATZs2veqyPT09GY4TAFAiFOsLTxwlNzdXu3btsj3PzMxUSkqKAgMDFR4erkGDBunNN99UjRo1VKVKFb366qsKDQ1V586dJUm1a9dWXFycnn76aX322Wc6f/68EhIS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\n",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "random.seed(1)\n",
    "perm_diffs = [perm_fun(session_times.Time, nA, nB) for _ in range(1000)]\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(5, 5))\n",
    "ax.hist(perm_diffs, bins=11, rwidth=0.9)\n",
    "ax.axvline(x = mean_b - mean_a, color='black', lw=2)\n",
    "ax.text(50, 190, 'Observed\\ndifference', bbox={'facecolor':'white'})\n",
    "ax.set_xlabel('Session time differences (in seconds)')\n",
    "ax.set_ylabel('Frequency')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:41:58.344077Z",
     "iopub.status.busy": "2022-04-26T19:41:58.343880Z",
     "iopub.status.idle": "2022-04-26T19:41:58.348849Z",
     "shell.execute_reply": "2022-04-26T19:41:58.348187Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.121\n"
     ]
    }
   ],
   "source": [
    "# convert perm_diffs to numpy array to avoid problems with some Python installations\n",
    "perm_diffs = np.array(perm_diffs)\n",
    "print(np.mean(perm_diffs > mean_b - mean_a))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Statistical Significance and P-Values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:41:58.351537Z",
     "iopub.status.busy": "2022-04-26T19:41:58.351361Z",
     "iopub.status.idle": "2022-04-26T19:42:21.707046Z",
     "shell.execute_reply": "2022-04-26T19:42:21.705887Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Observed difference: 0.0368%\n"
     ]
    },
    {
     "data": {
      "image/png": "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K3Tw4EHNnz9fDz/8sMqXL6/33nvPartq1SqNHDlSu3fv1pgxYzR9+nT17dtX0oWntsePH6/t27frt99+07fffitfX1+Fh4erevXqiomJUdeuXTVz5kzt27dP69at0/DhwzV37tzr1hgTE6ONGzfqvffe0//7f/9PPj4+1rpBgwZp9erV6t27tzZv3qw9e/boxx9/tB4mq1GjhqKjo/Xss89q7dq1io+P19NPP33Fw3OwF4IaAP5UrVo1bdiwQZUrV9Zjjz2mKlWqqFevXnrwwQcVFxenoKAgq23//v21YcMG1atXT++++64+/vhjRUVFSZICAwP1r3/9Sw888IDq1q2rRYsW6b///a9Kly4tSZowYYK6du2q/v37q0aNGurQoYPWr19/Q+M7V61aVY0aNdLWrVutp70vqlu3rpYvX67du3eradOmqlevnoYMGWI9tHbx2GFhYWrWrJk6duyoXr16KTg42BXdh3ziMDf65EQhlpGRoVKlSunEiRMKCAhwdzlAgYp49fpXcfll/4i21290DXfeead+//13lS9fXocOHbpu+40bN6p+/fqKj49nPOo8og9d42ZyhytqAABsjKAGAMDGCGoAAGyMoAYAwMYIagC4hubNm1uv5Lx83OaUlBQ9/PDDKlGihPV2r9yWAbeCF54AwA1av369SpQoYc2PHj1aycnJ2rx5s0qVKnXVZcCtIKgB4AZd/vrQxMRE1a9fX9WqVbvmspt19uxZeXt753l7FC589A0Afzp16pS6du2qkiVLKjQ0VB999JHT+ks/+o6IiNCMGTM0adIkORwOde/ePddlkpSenq6nn35aZcuWVUBAgB566CFt2bLF2u+wYcN0zz336KuvvlKlSpVUvHjxm9ru3//+tyIiIlSqVCl17txZJ0+etNrk5ORo5MiRqlq1qnx8fFSxYkWnN6wdPHhQjz32mAIDAxUUFKT27dtr//79Lu5Z3AqCGgD+NHDgQC1fvlw//vijFixYoGXLlmnjxo25tl2/fr2io6P12GOPKTk5WZ9++mmuy6QLo2mlpqbqp59+sl4U0qJFC6WlpVn727t3r2bMmKGZM2dq8+bNN7xdYmKifvjhB82ZM0dz5szR8uXLNWLECGv94MGDNWLECL355pvauXOnpkyZonLlykm6MJRmVFSU/P399csvv2jVqlUqWbKkoqOjdfbsWVd3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ghoAABsjqAEAsDGCGgAAGyOoAQCwMYIaAAAbI6gBALAxghoAABsjqAEAsDGCGgAAGyOoAQCwMYIaAAAbI6gBALAxghoAABsjqAEAsDGCGgAAGyOoAQCwMYIaAAAbI6gBALAxghoAABsjqAEAsDFPdxcAFFURr85127H3j2jrtmMDuDlcUQMAYGMENQAANkZQAwBgYwQ1AAA2RlADAGBjBDUAADZGUAMAYGMENQAANubWoF6xYoXatWunsLAwORwO/fDDD07ru3fvLofD4TRFR0c7tUlLS1NMTIwCAgIUGBionj17KjMzswDPAgCA/OPWoD516pTuvvtujRkz5qptoqOjlZycbE3fffed0/qYmBjt2LFDCxcu1Jw5c7RixQr16tUrv0sHAKBAuPUVoq1bt1br1q2v2cbHx0chISG5rktISND8+fO1fv16NWjQQJL0+eefq02bNvrwww8VFhbm8poBAChItr9HvWzZMgUHB6tGjRp6/vnndezYMWtdXFycAgMDrZCWpJYtW6pYsWJau3btVfeZlZWljIwMpwkAADuydVBHR0dr0qRJWrx4sT744AMtX75crVu3VnZ2tiQpJSVFwcHBTtt4enoqKChIKSkpV93v8OHDVapUKWuqUKFCvp4HAAB5ZevRszp37mz9XKdOHdWtW1dVqlTRsmXL1KJFizzvd/DgwerXr581n5GRQVgDAGzJ1lfUl6tcubLKlCmjvXv3SpJCQkKUmprq1Ob8+fNKS0u76n1t6cJ974CAAKcJAAA7uq2C+tChQzp27JhCQ0MlSZGRkUpPT1d8fLzVZsmSJcrJyVHjxo3dVSYAAC7j1o++MzMzratjSdq3b582b96soKAgBQUF6a233lKnTp0UEhKixMREvfLKK6pataqioqIkSbVq1VJ0dLSeeeYZjRs3TufOnVPv3r3VuXNnnvgGABQKbr2i3rBhg+rVq6d69epJkvr166d69eppyJAh8vDw0NatW/XII4+oevXq6tmzp+rXr69ffvlFPj4+1j4mT56smjVrqkWLFmrTpo2aNGmif/7zn+46JQAAXMqtV9TNmzeXMeaq63/++efr7iMoKEhTpkxxZVkAANjGbXWPGgCAooagBgDAxvIU1L/99pur6wAAALnIU1BXrVpVDz74oL799ludOXPG1TUBAIA/5SmoN27cqLp166pfv34KCQnR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\n",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "random.seed(1)\n",
    "obs_pct_diff = 100 * (200 / 23739 - 182 / 22588)\n",
    "print(f'Observed difference: {obs_pct_diff:.4f}%')\n",
    "conversion = [0] * 45945\n",
    "conversion.extend([1] * 382)\n",
    "conversion = pd.Series(conversion)\n",
    "\n",
    "perm_diffs = [100 * perm_fun(conversion, 23739, 22588) \n",
    "              for _ in range(1000)]\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(5, 5))\n",
    "ax.hist(perm_diffs, bins=11, rwidth=0.9)\n",
    "ax.axvline(x=obs_pct_diff, color='black', lw=2)\n",
    "ax.text(0.06, 200, 'Observed\\ndifference', bbox={'facecolor':'white'})\n",
    "ax.set_xlabel('Conversion rate (percent)')\n",
    "ax.set_ylabel('Frequency')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## P-Value\n",
    "If `np.mean` is applied to a list of booleans, it gives the percentage of how often True was found in the list (#True / #Total)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:21.710290Z",
     "iopub.status.busy": "2022-04-26T19:42:21.710026Z",
     "iopub.status.idle": "2022-04-26T19:42:21.716579Z",
     "shell.execute_reply": "2022-04-26T19:42:21.715611Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.332\n"
     ]
    }
   ],
   "source": [
    "print(np.mean([diff > obs_pct_diff for diff in perm_diffs]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:21.719575Z",
     "iopub.status.busy": "2022-04-26T19:42:21.719144Z",
     "iopub.status.idle": "2022-04-26T19:42:21.724924Z",
     "shell.execute_reply": "2022-04-26T19:42:21.724015Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p-value for single sided test: 0.3498\n"
     ]
    }
   ],
   "source": [
    "survivors = np.array([[200, 23739 - 200], [182, 22588 - 182]])\n",
    "chi2, p_value, df, _ = stats.chi2_contingency(survivors)\n",
    "\n",
    "print(f'p-value for single sided test: {p_value / 2:.4f}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# t-Tests"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:21.729209Z",
     "iopub.status.busy": "2022-04-26T19:42:21.728975Z",
     "iopub.status.idle": "2022-04-26T19:42:21.735487Z",
     "shell.execute_reply": "2022-04-26T19:42:21.734555Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p-value for single sided test: 0.1408\n"
     ]
    }
   ],
   "source": [
    "res = stats.ttest_ind(session_times[session_times.Page == 'Page A'].Time, \n",
    "                      session_times[session_times.Page == 'Page B'].Time,\n",
    "                      equal_var=False)\n",
    "print(f'p-value for single sided test: {res.pvalue / 2:.4f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:21.739558Z",
     "iopub.status.busy": "2022-04-26T19:42:21.739291Z",
     "iopub.status.idle": "2022-04-26T19:42:21.747649Z",
     "shell.execute_reply": "2022-04-26T19:42:21.746446Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p-value: 0.1408\n"
     ]
    }
   ],
   "source": [
    "tstat, pvalue, df = sm.stats.ttest_ind(\n",
    "    session_times[session_times.Page == 'Page A'].Time, \n",
    "    session_times[session_times.Page == 'Page B'].Time,\n",
    "    usevar='unequal', alternative='smaller')\n",
    "print(f'p-value: {pvalue:.4f}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ANOVA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:21.751186Z",
     "iopub.status.busy": "2022-04-26T19:42:21.750977Z",
     "iopub.status.idle": "2022-04-26T19:42:21.897765Z",
     "shell.execute_reply": "2022-04-26T19:42:21.896620Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "four_sessions = pd.read_csv(FOUR_SESSIONS_CSV)\n",
    "\n",
    "ax = four_sessions.boxplot(by='Page', column='Time',\n",
    "                           figsize=(4, 4))\n",
    "ax.set_xlabel('Page')\n",
    "ax.set_ylabel('Time (in seconds)')\n",
    "plt.suptitle('')\n",
    "plt.title('')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:21.900869Z",
     "iopub.status.busy": "2022-04-26T19:42:21.900292Z",
     "iopub.status.idle": "2022-04-26T19:42:21.911676Z",
     "shell.execute_reply": "2022-04-26T19:42:21.910836Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     Page  Time\n",
      "0  Page 1   164\n",
      "1  Page 2   178\n",
      "2  Page 3   175\n",
      "3  Page 4   155\n",
      "4  Page 1   172\n"
     ]
    }
   ],
   "source": [
    "print(pd.read_csv(FOUR_SESSIONS_CSV).head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:21.915209Z",
     "iopub.status.busy": "2022-04-26T19:42:21.914517Z",
     "iopub.status.idle": "2022-04-26T19:42:21.927224Z",
     "shell.execute_reply": "2022-04-26T19:42:21.926407Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Observed means: [172.8 182.6 175.6 164.6]\n",
      "Variance: 55.426666666666655\n",
      "23.5866666666666\n"
     ]
    }
   ],
   "source": [
    "observed_variance = four_sessions.groupby('Page').mean().var()[0]\n",
    "print('Observed means:', four_sessions.groupby('Page').mean().values.ravel())\n",
    "print('Variance:', observed_variance)\n",
    "# Permutation test example with stickiness\n",
    "def perm_test(df):\n",
    "    df = df.copy()\n",
    "    df['Time'] = np.random.permutation(df['Time'].values)\n",
    "    return df.groupby('Page').mean().var()[0]\n",
    "    \n",
    "print(perm_test(four_sessions))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:21.930000Z",
     "iopub.status.busy": "2022-04-26T19:42:21.929797Z",
     "iopub.status.idle": "2022-04-26T19:42:25.947396Z",
     "shell.execute_reply": "2022-04-26T19:42:25.946552Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pr(Prob) 0.074\n"
     ]
    },
    {
     "data": {
      "image/png": "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LVmyRF988YUGDRrkjikBAOBSbj2jfuGFFxQeHq60tDSzLSoqyvyzYRh65ZVX9PTTT6t79+6SpHfeeUehoaFavHixevfurV27dmnZsmXatGmTeRb+2muv6e6779aLL76osLCwyzspAABcyK1n1B9//LHatGmje++9VyEhIWrZsqXeeusts//AgQNyOByKjY0124KCgtSuXTtlZWVJkrKyshQcHGyGtCTFxsbK09NTGzZsOOt+S0pKVFRU5LQAAGBFbg3q7777zrzfvHz5cg0ePFiPP/645s6dK0lyOBySpNDQUKfPhYaGmn0Oh0MhISFO/V5eXqpTp4455vdSU1MVFBRkLuHh4a6eGgAALuHWoC4vL1erVq00adIktWzZUoMGDdLDDz+s2bNnX9L9jhkzRkeOHDGX3NzcS7o/AAAqy61BXb9+fcXExDi1NW3aVDk5OZIkm80mScrPz3cak5+fb/bZbDYVFBQ49Z86dUqHDx82x/yer6+vAgMDnRYAAKzIrUHdoUMH7d6926ltz549atiwoaTTD5bZbDZlZmaa/UVFRdqwYYPsdrskyW63q7CwUNnZ2eaYVatWqby8XO3atbsMswAA4NJx61Pfw4YN0y233KJJkybpvvvu08aNG/Xmm2/qzTfflCR5eHho6NChev7559W4cWNFRUVp7NixCgsLU48ePSSdPgPv0qWLecm8tLRUKSkp6t27N098AwCueG4N6rZt22rRokUaM2aMxo8fr6ioKL3yyitKSEgwxzz55JM6duyYBg0apMLCQt16661atmyZatasaY6ZN2+eUlJS1LlzZ/MHT6ZPn+6OKQEA4FJu/2WyP/3pT/rTn/50zn4PDw+NHz9e48ePP+eYOnXqaP78+ZeiPAAA3Irf+gYAwMIIagAALIygBgDAwghqAAAsjKAGAMDCCGoAACyMoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDCCGoAACyMoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDCCGoAACyMoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDCCGoAACyMoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDCCGoAACyMoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDCCGoAACyMoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDCCGoAACzM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ICBAbdu21cqVK53GRkZGasKECerXr58CAwM1aNCgCpe+y8rKlJSUpKioKPn5+en666/Xq6++6rSd/v37q0ePHnrxxRdVv3591a1bV8nJySotLTXHlJSUaNSoUQoPD5evr68aNWqkOXPmmP3ffvutunbtqoCAAIWGhqpv3776+eefXXzUUB0Q1AAs4d5779Uvv/yi1atXm22HDx/WsmXLlJCQoOLiYt19993KzMzUli1b1KVLF3Xr1k05OTlO23nxxRfNd1SPHTu2wn7Ky8vVoEEDLVy4UDt37tS4ceP0t7/9TR988IHTuNWrV2v//v1avXq15s6dq/T0dKcfYenXr5/ee+89TZ8+Xbt27dIbb7xhvtCjsLBQnTp1UsuWLbV582YtW7ZM+fn5uu+++1x4xFBdcOkbgCVcddVV6tq1q+bPn6/OnTtLkv75z3+qXr16uuOOO+Tp6en0XugJEyZo0aJF+vjjj83f0ZakTp066YknnjDXf/8LZmd+keyMqKgoZWVl6YMPPnAK0quuukqvv/66atSooejoaMXHxyszM1MPP/yw9uzZow8++EAZGRmKjY2VJF177bXmZ19//XW1bNnSfK+1JL399tsKDw/Xnj171KRJk4s8WqhOOKMGYBkJCQn68MMPVVJSIun0u5579+4tT09PFRcXa8SIEWratKmCg4MVEBCgXbt2VTijbtOmzR/uZ8aMGWrdurWuvvpqBQQE6M0336ywnRtuuMHpFZj169dXQUGBJGnr1q2qUaOGOnbseNbtb9u2TatXr3Z6J3V0dLQkOb3vGjgfbg3q1NRUtW3bVrVr11ZISIh69Oih3bt3O405ceKEkpOTVbduXQUEBKhXr17Kz893GpOTk6P4+Hj5+/srJCREI0eONF8QD+DK0a1bNxmGoaVLlyo3N1dffvml+dKLESNGaNGiRZo0aZK+/PJLbd26Vc2aNdPJkyedtlGrVq3/uY8FCxZoxIgRSkpK0ooVK7R161YNGDCgwna8vb2d1j08PMz753/0pqvi4mJ169ZNW7dudVr27t2r//f//t95HQvgDLde+l6zZo2Sk5PVtm1bnTp1Sn/729901113aefOneZftmHDhmnp0qVauHChgoKClJKSop49e2rt2rWSTj8YEh8fL5vNpnXr1ikvL0/9+vWTt7e302UnANZXs2ZN9ezZU/PmzdO+fft0/fXXq1WrVpJOv9Kyf//+uueeeySdDsM/ejHH2axdu1a33HKLHn30UbPtQs9ymzVrpvLycq1Zs8a89P1brVq10ocffqjIyEh5eXGHERfHrWfUy5YtU//+/XXDDTfopptuUnp6unJycpSdnS1JOnLkiObMmaNp06apU6dOat26tdLS0rRu3TrzhfErVqzQzp079e6776pFixbq2rWrJkyYoBkzZlT4L+QzSkpKVFRU5LQAsIaEhAQtXbpUb7/9ttMrJBs3bqyPPvpIW7du1bZt2/Tggw9WeEL8fJx5jeby5cu1Z88ejR07Vps2bbqgbURGRioxMVEDBw7U4sWLdeDAAX3++efmA2nJyck6fPiwHnjgAW3atEn79+/X8uXLNWDAAJWVlV1wzajeLHWP+siRI5Jkvm82OztbpaWlTv/FGh0drYiICGVlZUmSsrKy1KxZM4WGhppj4uLiVFRUpB07dpx1P6mpqQoKCjKX8PDwSzUlABeoU6dOqlOnjnbv3q0HH3zQbJ82bZquuuoq3XLLLerWrZvi4uLMs+0L8cgjj6hnz566//771a5dO/3yyy9OZ9fna9asWfrLX/6iRx99VNHR0Xr44Yd17NgxSVJYWJjWrl2rsrIy3XXXXWrWrJmGDh2q4OBgeXpa6l+7uAJY5ppMeXm5hg4dqg4dOujGG2+UJDkcDvn4+Cg4ONhpbGhoqBwOhznmtyF9pv9M39mMGTNGw4cPN9eLiooIa8AiPD09dejQoQrtkZGRWrVqlVNbcnKy0/rZLoVHRkbKMAxz3dfXV2lpaUpLS3Mal5qaav75bO/CfuWVV5zWa9asqWnTpmnatGlnnceZKwDAxbJMUCcnJ+vbb7/VV199dcn35evrK19f30u+HwAALpYlrsGkpKRoyZIlWr16tRo0aGC222w2nTx5UoWFhU7j8/PzzZ8EtNlsFZ4CP7POzwYCAK50bg1qwzCUkpKiRYsWadWqVYqKinLqb926tby9vZWZmWm27d69Wzk5ObLb7ZIku92u7du3m99vlKSMjAwFBgYqJibm8kwEAIBLxK2XvpOTkzV//nz961//Uu3atc17ykFBQfLz81NQUJCSkpI0fPhw1alTR4GBgXrsscdkt9vVvn17SdJdd92lmJgY9e3bV1OmTJHD4dDTTz+t5ORkLm8DAK54bg3qWbNmSZJuv/12p/a0tDT1799fkvTyyy/L09NTvXr1UklJieLi4jRz5kxzbI0aNbRkyRINHjxYdrtdtWrVUmJiosaPH3+5pgEAwCXj1qD+7ZOY51KzZk3NmDFDM2bMOOeYhg0b6tNPP3VlaQAAWIJlnvoGUH3s2rXL3SVcUThe1RtBDeCyqVevnvz9/dWnTx93l3LF8ff3V7169dxdBtyAoAZw2URERGjXrl36+eef3V3KFadevXqKiIhwdxlwA4IawGUVERFB4AAXwBI/eAIAAM6OoAYAwMIIagAALIygBgDAwghqAAAsjKAGAMDCCGoAACyMoAYAwML4wROgmoscvfSit+E4csL854Vs7/vJ8Re9b6Cq44waAAALI6gBALAwghoAAAsjqAEAsDCCGgAACyOoAQCwMIIaAAALI6gBALAwghoAAAsjqAEAsDCCGgAACyOoAQCwMIIaAAALI6gBALAwghoAAAsjqAEAsDCCGgAACyOoAQCwMIIaAAALI6gBALAwghoAAAsjqAEAsDCCGgAACyOoAQCwMIIaAAALI6gBALAwghoAAAsjqAEAsDC3BvUXX3yhbt26KSwsTB4eHlq8eLFTv2EYGjdunOrXry8/Pz/FxsZq7969TmMOHz6shIQEBQYGKjg4WElJSSouLr6MswAA4NJxa1AfO3ZMN910k2bMmHHW/ilTpmj69OmaPXu2NmzYoFq1aikuLk4nTpwwxyQkJGjHjh3KyMjQkiVL9MUXX2jQoEGXawoAAFxSXu7cedeuXdW1a9ez9hmGoVdeeUVPP/20unfvLkl65513FBoaqsWLF6t3797atWuXli1bpk2bNqlNmzaSpNdee0133323XnzxRYWFhV22uQAAcClY9h71gQMH5HA4FBsba7YFBQWpXbt2ysrKkiRlZWUpODjYDGlJio2NlaenpzZs2HDObZeUlKioqMhpAQDAiiwb1A6HQ5IUGhrq1B4aGmr2ORwOhYSEOPV7eXmpTp065pizSU1NVVBQkLmEh4e7uHoAAFzDskF9KY0ZM0ZHjhwxl9zcXHeXBADAWVk2qG02myQpPz/fqT0/P9/ss9lsKigocOo/deqUDh8+bI45G19fXwUGBjotAABYkWWDOioqSjabTZmZmWZbUVGRNmzYILvdLkmy2+0qLCxUdna2OWbVqlUqLy9Xu3btLnvNAAC4mluf+i4uLta+ffvM9QMHDmjr1q2qU6eOIiIiNHToUD3//PNq3LixoqKiNHbsWIWFhalHjx6SpKZNm6pLly56+OGHNXv2bJWWliolJUW9e/fmiW8AQJXg1qDevHmz7rjjDnN9+PDhkqTExESlp6frySef1LFjxzRo0CAVFhbq1ltv1bJly1SzZk3zM/PmzVNKSoo6d+4sT09P9erVS9OnT7/scwEA4FJwa1DffvvtMgzjnP0eHh4aP368xo8ff84xderU0fz58y9FeQAAuJ1l71EDAACCGgAASyOoAQCwMIIaAAALI6gBALAwghoAAAtz69ezAOC3Ikcvddu+v58c77Z9A/8LZ9QAAFgYQQ0AgIUR1AAAWBhBDQCAhRHUAABYGEENAICFEdQAAFgYQQ0AgIUR1AAAWBhBDQCAhRHUAABYGEENAICFEdQAAFgYQQ0AgIUR1AAAWBhBDQCAhXm5uwAAsJrI0Uvdtu/vJ8e7bd+wJs6oAQCwMIIaAAALI6gBALAwghoAAAsjqAEAsDCCGgAACyOoAQCwMIIaAAALI6gBALAwghoAAAsjqAEAsDCCGgAAC+OlHABgYbwgBJxRAwBgYQQ1AAAWxqVvAMB54TK8e3BGDQCAhRHUAABYWJW59D1jxgxNnTpVDodDN910k1577TXdfPPN7i4LAOBi1e0SfJU4o37//fc1fPhwPfPMM/r666910003KS4uTgUFBe4uDQCAi1IlgnratGl6+OGHNWDAAMXExGj27Nny9/fX22+/7e7SAAC4KFf8pe+TJ08qOztbY8aMMds8PT0VGxurrKyss36mpKREJSUl5vqRI0ckSUVFRRddT3nJ8YvexsX47RzcWcvvj6VVarFKHZJ1anFFHYZRbv7zQrZXlY+JK+qQqOUMq/7vc7HbMQzjjwcbV7iDBw8akox169Y5tY8cOdK4+eabz/qZZ555xpDEwsLCwsLi1iU3N/cPc+6KP6OujDFjxmj48OHmenl5uQ4fPqy6devKw8PjgrdXVFSk8PBw5ebmKjAw0JWlXtE4LhVxTM6O41IRx+TsqspxMQxDR48eVVhY2B+OveKDul69eqpRo4by8/Od2vPz82Wz2c76GV9fX/n6+jq1BQcHX3QtgYGBV/T/cS4VjktFHJOz47hUxDE5u6pwXIKCgs5r3BX/MJmPj49at26tzMxMs628vFyZmZmy2+1urAwAgIt3xZ9RS9Lw4cOVmJioNm3a6Oabb9Yrr7yiY8eOacCAAe4uDQCAi1Ilgvr+++/XTz/9pHHjxsnhcKhFixZatmyZQkNDL8v+fX199cwzz1S4nF7dcVwq4picHcelIo7J2VXH4+JhGOfzbDgAAHCHK/4eNQAAVRlBDQCAhRHUAABYGEENAICFEdQuMGPGDEVGRqpmzZpq166dNm7c6O6SLpvU1FS1bdtWtWvXVkhIiHr06KHdu3c7jTlx4oSSk5NVt25dBQQEqFevXhV+oKYqmzx5sjw8PDR06FCzrboek4MHD6pPnz6qW7eu/Pz81KxZM23evNnsNwxD48aNU/369eXn56fY2Fjt3bvXjRVfemVlZRo7dqyioqLk5+en6667ThMmTHD6Deiqfly++OILdevWTWFhYfLw8NDixYud+s9n/ocPH1ZCQoICAwMVHByspKQkFRcXX8ZZXEIX90vbWLBggeHj42O8/fbbxo4dO4yHH37YCA4ONvLz891d2mURFxdnpKWlGd9++62xdetW4+677zYiIiKM4uJic8xf//pXIzw83MjMzDQ2b95stG/f3rjlllvcWPXls3HjRiMyMtJo3ry5MWTIELO9Oh6Tw4cPGw0bNjT69+9vbNiwwfjuu++M5cuXG/v27TPHTJ482QgKCjIWL15sbNu2zfjzn/9sREVFGf/5z3/cWPmlNXHiRKNu3brGkiVLjAMHDhgLFy40AgICjFdffdUcU9WPy6effmo89dRTxkcffWRIMhYtWuTUfz7z79Kli3HTTTcZ69evN7788kujUaNGxgMPPHCZZ3JpENQX6eabbzaSk5PN9bKyMiMsLMxITU11Y1XuU1BQYEgy1qxZYxiGYRQWFhre3t7GwoULzTG7du0yJBlZWVnuKvOyOHr0qNG4cWMjIyPD6NixoxnU1fWYjBo1yrj11lvP2V9eXm7YbDZj6tSpZlthYaHh6+trvPfee5ejRLeIj483Bg4c6NTWs2dPIyEhwTCM6ndcfh/U5zP/nTt3GpKMTZs2mWM+++wzw8PDwzh48OBlq/1S4dL3RTjzis3Y2Fiz7Y9esVnVnXllaJ06dSRJ2dnZKi0tdTpG0dHRioiIqPLHKDk5WfHx8U5zl6rvMfn444/Vpk0b3XvvvQoJCVHLli311ltvmf0HDhyQw+FwOi5BQUFq165dlT4ut9xyizIzM7Vnzx5J0rZt2/TVV1+pa9eukqrvcTnjfOaflZWl4OBgtWnTxhwTGxsrT09Pbdiw4bLX7GpV4pfJ3OXnn39WWVlZhV9ACw0N1b///W83VeU+5eXlGjp0qDp06KAbb7xRkuRwOOTj41PhpSehoaFyOBxuqPLyWLBggb7++mtt2rSpQl91PSbfffedZs2apeHDh+tvf/ubNm3apMcff1w+Pj5KTEw05362v09V+biMHj1aRUVFio6OVo0aNVRWVqaJEycqISFBkqrtcTnjfObvcDgUEhLi1O/l5aU6depUiWNEUMNlkpOT9e233+qrr75ydylulZubqyFDhigjI0M1a9Z0dzmWUV5erjZt2mjSpEmSpJYtW+rbb7/V7NmzlZiY6Obq3OeDDz7QvHnzNH/+fN1www3aunWrhg4dqrCwsGp9XPBfXPq+CJV5xWZVlZKSoiVLlmj16tVq0KCB2W6z2XTy5EkVFhY6ja/Kxyg7O1sFBQVq1aqVvLy85OXlpTVr1mj69Ony8vJSaGhotTsmklS/fn3FxMQ4tTVt2lQ5OTmSZM69uv19GjlypEaPHq3evXurWbNm6tu3r4YNG6bU1FRJ1fe4nHE+87fZbCooKHDqP3XqlA4fPlwljhFBfRF4xebpr02kpKRo0aJFWrVqlaKiopz6W7duLW9vb6djtHv3buXk5FTZY9S5c2dt375dW7duNZc2bdooISHB/HN1OyaS1KFDhwpf3duzZ48aNmwoSYqKipLNZnM6LkVFRdqwYUOVPi7Hjx+Xp6fzv4pr1Kih8vJySdX3uJxxPvO32+0qLCxUdna2OWbVqlUqLy9Xu3btLnvNLufup9mudAsWLDB8fX2N9PR0Y+fOncagQYOM4OBgw+FwuLu0y2Lw4MFGUFCQ8fnnnxt5eXnmcvz4cXPMX//6VyMiIsJYtWqVsXnzZsNutxt2u92NVV9+v33q2zCq5zHZuHGj4eXlZUycONHYu3evMW/ePMPf39949913zTGTJ082goODjX/961/GN998Y3Tv3r1KfQ3pbBITE41rrrnG/HrWRx99ZNSrV8948sknzTFV/bgcPXrU2LJli7FlyxZDkjFt2jRjy5Ytxg8//GAYxvnNv0uXLkbLli2NDRs2GF999ZXRuHFjvp6F/3rttdeMiIgIw8fHx7j55puN9evXu7uky0bSWZe0tDRzzH/+8x/j0UcfNa666irD39/fuOeee4y8vDz3Fe0Gvw/q6npMPvnkE+PGG280fH19jejoaOPNN9906i8vLzfGjh1rhIaGGr6+vkbnzp2N3bt3u6nay6OoqMgYMmSIERERYdSsWdO49tprjaeeesooKSkxx1T147J69eqz/nskMTHRMIzzm/8vv/xiPPDAA0ZAQIARGBhoDBgwwDh69KgbZuN6vOYSAAAL4x41AAAWRlADAGBhBDUAABZGUAMAYGEENQAAFkZQAwBgYQQ1AAAWRlADAGBhBDWAP+Th4aHFixe7uwygWiKogSqiW7du6tKly1n7vvzyS3l4eOibb76p1Lbz8vLUtWvXiykPQCUR1EAVkZSUpIyMDP34448V+tLS0tSmTRs1b978grZ58uRJSadfI+jr6+uSOgFcGIIaqCL+9Kc/6eqrr1Z6erpTe3FxsRYuXKgePXrogQce0DXXXCN/f381a9ZM7733ntPY22+/XSkpKRo6dKjq1aunuLg4SRUvfY8aNUpNmjSRv7+/rr32Wo0dO1alpaVm/7PPPqsWLVroH//4hyIjIxUUFKTevXvr6NGj5pjy8nJNmTJFjRo1kq+vryIiIjRx4kSzPzc3V/fdd5+Cg4NVp04dde/eXd9//73rDhhwhSCogSrCy8tL/fr1U3p6un77rp2FCxeqrKxMffr0UevWrbV06VJ9++23GjRokPr27auNGzc6bWfu3Lny8fHR2rVrNXv27LPuq3bt2kpPT9fOnTv16quv6q233tLLL7/sNGb//v1avHixlixZoiVLlmjNmjWaPHmy2T9mzBhNnjxZY8eO1c6dOzV//nyFhoZKkkpLSxUXF6fatWvryy+/1Nq1axUQEKAuXbqYZ/lAteHmt3cBcKFdu3YZkozVq1ebbbfddpvRp0+fs46Pj483nnjiCXO9Y8eORsuWLSuMk2QsWrTonPudOnWq0bp1a3P9mWeeMfz9/Y2ioiKzbeTIkUa7du0Mwzj9akdfX1/jrbfeOuv2/vGPfxjXX3+9UV5ebraVlJQYfn5+xvLly89ZB1AVebn7PxQAuE50dLRuueUWvf3227r99tu1b98+ffnllxo/frzKyso0adIkffDBBzp48KBOnjypkpIS+fv7O22jdevWf7if999/X9OnT9f+/ftVXFysU6dOKTAw0GlMZGSkateuba7Xr19fBQUFkqRdu3appKREnTt3Puv2t23bpn379jl9XpJOnDih/fv3n9exAKoKghqoYpKSkvTYY49pxowZSktL03XXXaeOHTvqhRde0KuvvqpXXnlFzZo1U61atTR06NAKl5Jr1ar1P7eflZWlhIQEPffcc4qLi1NQUJAWLFigl156yWmct7e307qHh4fKy8slSX5+fv9zH8XFxWrdurXmzZtXoe/qq6/+n58FqhqCGqhi7rvvPg0ZMkTz58/XO++8o8GDB8vDw0Nr165V9+7d1adPH0mnH+bas2ePYmJiLmj769atU8OGDfXUU0+ZbT/88MMFbaNx48by8/NTZmamHnrooQr9rVq10vvvv6+QkJAKZ+pAdcPDZEAVExAQoPvvv19jxoxRXl6e+vfvL+l0OGZkZGjdunXatWuXHnnkEeXn51/w9hs3bqycnBwtWLBA+/fv1/Tp07Vo0aIL2kbNmjU1atQoPfnkk3rnnXe0f/9+rV+/XnPmzJEkJSQkqF69eurevbu+/PJLHThwQJ9//rkef/zxs379DKjKCGqgCkpKStKvv/6quLg4hYWFSZKefvpptWrVSnFxcbr99ttls9nUo0ePC972n//8Zw0bNkwpKSlq0aKF1q1bp7Fjx17wdsaOHasnnnhC48aNU9OmTXX//feb97D9/f31xRdfKCIiQj179lTTpk2VlJSkEydOcIaNasfDMH7zPQ4AAGApnFEDAGBhBDUAABZGUAMAYGEENQAAFkZQAwBgYQQ1AAAWRlADAGBhBDUAABZGUAMAYGEENQAAFkZQAwBgYf8fcsdmNZqwm7cAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "random.seed(1)\n",
    "perm_variance = [perm_test(four_sessions) for _ in range(3000)]\n",
    "print('Pr(Prob)', np.mean([var > observed_variance for var in perm_variance]))\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(5, 5))\n",
    "ax.hist(perm_variance, bins=11, rwidth=0.9)\n",
    "ax.axvline(x = observed_variance, color='black', lw=2)\n",
    "ax.text(60, 200, 'Observed\\nvariance', bbox={'facecolor':'white'})\n",
    "ax.set_xlabel('Variance')\n",
    "ax.set_ylabel('Frequency')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## F-Statistic\n",
    "We can compute an ANOVA table using statsmodel."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:25.950745Z",
     "iopub.status.busy": "2022-04-26T19:42:25.950256Z",
     "iopub.status.idle": "2022-04-26T19:42:25.966666Z",
     "shell.execute_reply": "2022-04-26T19:42:25.965805Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            df  sum_sq     mean_sq         F    PR(>F)\n",
      "Page       3.0   831.4  277.133333  2.739825  0.077586\n",
      "Residual  16.0  1618.4  101.150000       NaN       NaN\n"
     ]
    }
   ],
   "source": [
    "model = smf.ols('Time ~ Page', data=four_sessions).fit()\n",
    "                \n",
    "aov_table = sm.stats.anova_lm(model)\n",
    "print(aov_table)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:25.969823Z",
     "iopub.status.busy": "2022-04-26T19:42:25.969091Z",
     "iopub.status.idle": "2022-04-26T19:42:25.977569Z",
     "shell.execute_reply": "2022-04-26T19:42:25.976760Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "F-Statistic: 1.3699\n",
      "p-value: 0.0388\n"
     ]
    }
   ],
   "source": [
    "res = stats.f_oneway(four_sessions[four_sessions.Page == 'Page 1'].Time, \n",
    "                     four_sessions[four_sessions.Page == 'Page 2'].Time,\n",
    "                     four_sessions[four_sessions.Page == 'Page 3'].Time,\n",
    "                     four_sessions[four_sessions.Page == 'Page 4'].Time)\n",
    "print(f'F-Statistic: {res.statistic / 2:.4f}')\n",
    "print(f'p-value: {res.pvalue / 2:.4f}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Two-way anova only available with statsmodels\n",
    "```\n",
    "formula = 'len ~ C(supp) + C(dose) + C(supp):C(dose)'\n",
    "model = ols(formula, data).fit()\n",
    "aov_table = anova_lm(model, typ=2)\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Chi-Square Test\n",
    "## Chi-Square Test: A Resampling Approach"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:25.980996Z",
     "iopub.status.busy": "2022-04-26T19:42:25.980245Z",
     "iopub.status.idle": "2022-04-26T19:42:25.992905Z",
     "shell.execute_reply": "2022-04-26T19:42:25.991946Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Headline  Headline A  Headline B  Headline C\n",
      "Click                                       \n",
      "Click             14           8          12\n",
      "No-click         986         992         988\n"
     ]
    }
   ],
   "source": [
    "# Table 3-4\n",
    "click_rate = pd.read_csv(CLICK_RATE_CSV)\n",
    "clicks = click_rate.pivot(index='Click', columns='Headline', values='Rate')\n",
    "print(clicks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:25.996281Z",
     "iopub.status.busy": "2022-04-26T19:42:25.995453Z",
     "iopub.status.idle": "2022-04-26T19:42:26.004487Z",
     "shell.execute_reply": "2022-04-26T19:42:26.003719Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Headline A</th>\n",
       "      <th>Headline B</th>\n",
       "      <th>Headline C</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Click</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Click</th>\n",
       "      <td>11.333333</td>\n",
       "      <td>11.333333</td>\n",
       "      <td>11.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>No-click</th>\n",
       "      <td>988.666667</td>\n",
       "      <td>988.666667</td>\n",
       "      <td>988.666667</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Headline A  Headline B  Headline C\n",
       "Click                                       \n",
       "Click      11.333333   11.333333   11.333333\n",
       "No-click  988.666667  988.666667  988.666667"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Table 3-5\n",
    "row_average = clicks.mean(axis=1)\n",
    "pd.DataFrame({\n",
    "    'Headline A': row_average,\n",
    "    'Headline B': row_average,\n",
    "    'Headline C': row_average,\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:26.007379Z",
     "iopub.status.busy": "2022-04-26T19:42:26.007145Z",
     "iopub.status.idle": "2022-04-26T19:42:28.122476Z",
     "shell.execute_reply": "2022-04-26T19:42:28.121752Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Observed chi2: 1.6659\n",
      "Resampled p-value: 0.4660\n"
     ]
    }
   ],
   "source": [
    "# Resampling approach\n",
    "box = [1] * 34\n",
    "box.extend([0] * 2966)\n",
    "random.shuffle(box)\n",
    "\n",
    "def chi2(observed, expected):\n",
    "    pearson_residuals = []\n",
    "    for row, expect in zip(observed, expected):\n",
    "        pearson_residuals.append([(observe - expect) ** 2 / expect\n",
    "                                  for observe in row])\n",
    "    # return sum of squares\n",
    "    return np.sum(pearson_residuals)\n",
    "\n",
    "expected_clicks = 34 / 3\n",
    "expected_noclicks = 1000 - expected_clicks\n",
    "expected = [expected_clicks, expected_noclicks]\n",
    "chi2observed = chi2(clicks.values, expected)\n",
    "\n",
    "def perm_fun(box):\n",
    "    random.shuffle(box)\n",
    "    sample_clicks = [sum(box[0:1000]),\n",
    "                     sum(box[1000:2000]),\n",
    "                     sum(box[2000:3000])]\n",
    "    sample_noclicks = [1000 - n for n in sample_clicks]\n",
    "    return chi2([sample_clicks, sample_noclicks], expected)\n",
    "\n",
    "perm_chi2 = [perm_fun(box) for _ in range(2000)]\n",
    "\n",
    "resampled_p_value = sum(perm_chi2 > chi2observed) / len(perm_chi2)\n",
    "print(f'Observed chi2: {chi2observed:.4f}')\n",
    "print(f'Resampled p-value: {resampled_p_value:.4f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:28.126433Z",
     "iopub.status.busy": "2022-04-26T19:42:28.126032Z",
     "iopub.status.idle": "2022-04-26T19:42:28.132714Z",
     "shell.execute_reply": "2022-04-26T19:42:28.131972Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Observed chi2: 1.6659\n",
      "p-value: 0.4348\n"
     ]
    }
   ],
   "source": [
    "chisq, pvalue, df, expected = stats.chi2_contingency(clicks)\n",
    "print(f'Observed chi2: {chisq:.4f}')\n",
    "print(f'p-value: {pvalue:.4f}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The above algorithm uses sampling into the three sets without replacement. Alternatively, it is also possible to sample with replacement."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Observed chi2: 1.6659\n",
      "Resampled p-value: 0.4845\n"
     ]
    }
   ],
   "source": [
    "expected = [expected_clicks, expected_noclicks]\n",
    "def sample_with_replacement(box):\n",
    "    sample_clicks = [sum(random.sample(box, 1000)),\n",
    "                     sum(random.sample(box, 1000)),\n",
    "                     sum(random.sample(box, 1000))]\n",
    "    sample_noclicks = [1000 - n for n in sample_clicks]\n",
    "    return chi2([sample_clicks, sample_noclicks], expected)\n",
    "\n",
    "perm_chi2 = [sample_with_replacement(box) for _ in range(2000)]\n",
    "\n",
    "resampled_p_value = sum(perm_chi2 > chi2observed) / len(perm_chi2)\n",
    "print(f'Observed chi2: {chi2observed:.4f}')\n",
    "print(f'Resampled p-value: {resampled_p_value:.4f}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Figure chi-sq distribution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:28.135947Z",
     "iopub.status.busy": "2022-04-26T19:42:28.135769Z",
     "iopub.status.idle": "2022-04-26T19:42:28.518036Z",
     "shell.execute_reply": "2022-04-26T19:42:28.517020Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 400x250 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = [1 + i * (30 - 1) / 99 for i in range(100)]\n",
    "\n",
    "chi = pd.DataFrame({\n",
    "    'x': x,\n",
    "    'chi_1': stats.chi2.pdf(x, df=1),\n",
    "    'chi_2': stats.chi2.pdf(x, df=2),\n",
    "    'chi_5': stats.chi2.pdf(x, df=5),\n",
    "    'chi_10': stats.chi2.pdf(x, df=10),\n",
    "    'chi_20': stats.chi2.pdf(x, df=20),\n",
    "})\n",
    "fig, ax = plt.subplots(figsize=(4, 2.5))\n",
    "ax.plot(chi.x, chi.chi_1, color='black', linestyle='-', label='1')\n",
    "ax.plot(chi.x, chi.chi_2, color='black', linestyle=(0, (1, 1)), label='2')\n",
    "ax.plot(chi.x, chi.chi_5, color='black', linestyle=(0, (2, 1)), label='5')\n",
    "ax.plot(chi.x, chi.chi_10, color='black', linestyle=(0, (3, 1)), label='10')\n",
    "ax.plot(chi.x, chi.chi_20, color='black', linestyle=(0, (4, 1)), label='20')\n",
    "ax.legend(title='df')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fisher's Exact Test\n",
    "Scipy has only an implementation of Fisher's Exact test for 2x2 matrices. There is a github repository that provides a Python implementation that uses the same code as the R version. Installing this requires a Fortran compiler. \n",
    "```\n",
    "stats.fisher_exact(clicks)\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:28.520990Z",
     "iopub.status.busy": "2022-04-26T19:42:28.520672Z",
     "iopub.status.idle": "2022-04-26T19:42:28.524214Z",
     "shell.execute_reply": "2022-04-26T19:42:28.523528Z"
    }
   },
   "outputs": [],
   "source": [
    "# stats.fisher_exact(clicks.values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Scientific Fraud"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:28.528915Z",
     "iopub.status.busy": "2022-04-26T19:42:28.527903Z",
     "iopub.status.idle": "2022-04-26T19:42:28.657210Z",
     "shell.execute_reply": "2022-04-26T19:42:28.656675Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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xlorDgBQ97zaY3j99de1adMmtW7d2mpv3769vv7661opDADgH16tGMrLy62Vwk++//57hYWF1bgoAID/eBUM11xzjZYvX+45dzgccrvdmjt3rm644YZaKw4AUPe8eitp7ty5uvHGG7V9+3ZVVlbq/vvv1+eff67vv/9eH3zwQW3XCACoQ16tGC677DLt2bNHffr00aBBg1ReXq4hQ4bo448/1kUXXVTbNQIA6tA5rxiqqqp08803Kzs7Ww8//LAvagIA+NE5rxhCQkL06aef+qIWAEAA8OqtpBEjRmjx4sU1njwrK0udO3dWVFSUoqKilJycrA0bNnj6KyoqNGHCBMXExKhx48ZKS0tTcXFxjecFAJyZV5vPP/74o5YsWaI333xTXbt2PeU7ks72cZ6tW7fWnDlz1L59exljtGzZMg0aNEgff/yxLr30Uk2dOlWvvfaa1qxZo+joaE2cOFFDhgxhgxsAfOicguHAgQNKTEzUZ5995nmE5549e6xrzuVxngMHDrTO//KXvygrK0tbtmxR69attXjxYq1YsUJ9+/aVJOXk5Khjx47asmWLevbseS6lAwDO0jkFQ/v27VVUVKTNmzdLOvkVGE8//bRiY2NrXEh1dbXWrFmj8vJyJScna8eOHaqqqlJKSornmg4dOqhNmzbKy8s7YzC4XC65XC7PeVlZWY1rA4DzyTntMfzy21M3bNig8vLyGhWwe/duNW7cWGFhYRo/frxefvllderUSU6nU6GhoWrSpIl1fWxsrJxO5xnHy8jIUHR0tOdISEioUX0AcL6p0ddu18bXbF9yySXatWuXtm7dqj/+8Y8aNWqUvvjiC6/Hmz59ukpLSz3HoUOHalwjAJxPzumtJIfDccoewrnsKZxOaGio2rVrJ0nq2rWrtm3bpoULF+r2229XZWWlSkpKrFVDcXGx4uLizjheWFgY39cEADVwTsFgjNHo0aM9v3grKio0fvz4U+5KWrt2rdcFud1uuVwude3aVSEhIcrNzVVaWpokKT8/XwUFBUpOTvZ6fADArzunYBg1apR1PmLEiBpNPn36dPXr109t2rTRsWPHtGLFCr399tvatGmToqOjNXbsWKWnp6tZs2aKiorSpEmTlJyczB1JAOBD5xQMOTk5tTr5N998o5EjR6qoqEjR0dHq3LmzNm3apJtuukmSNH/+fAUFBSktLU0ul0upqalatGhRrdYAALB59QG32vJbn54ODw9XZmamMjMz66giAECN7koCANQ/BAMAwEIwAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwBLs7wKAQJD44Gs1ev3BOf1rqRLA/1gxAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwEIwAAAsBAMAwOLXYMjIyFD37t0VGRmpFi1aaPDgwcrPz7euqaio0IQJExQTE6PGjRsrLS1NxcXFfqoYAOo/vwbDO++8owkTJmjLli164403VFVVpT/84Q8qLy/3XDN16lStX79ea9as0TvvvKPCwkINGTLEj1UDQP3m16/E2Lhxo3W+dOlStWjRQjt27NC1116r0tJSLV68WCtWrFDfvn0lSTk5OerYsaO2bNminj17+qNsAKjXAmqPobS0VJLUrFkzSdKOHTtUVVWllJQUzzUdOnRQmzZtlJeX55caAaC+C5gv0XO73ZoyZYp69+6tyy67TJLkdDoVGhqqJk2aWNfGxsbK6XSedhyXyyWXy+U5Lysr81nNAFAfBcyKYcKECfrss8+0cuXKGo2TkZGh6Ohoz5GQkFBLFQLA+SEggmHixIn63//9X23evFmtW7f2tMfFxamyslIlJSXW9cXFxYqLizvtWNOnT1dpaannOHTokC9LB4B6x6/BYIzRxIkT9fLLL+utt95SUlKS1d+1a1eFhIQoNzfX05afn6+CggIlJyefdsywsDBFRUVZBwDg7Pl1j2HChAlasWKFXnnlFUVGRnr2DaKjoxUREaHo6GiNHTtW6enpatasmaKiojRp0iQlJydzRxIA+IhfgyErK0uSdP3111vtOTk5Gj16tCRp/vz5CgoKUlpamlwul1JTU7Vo0aI6rhTwPZ4ih0Dh12AwxvzmNeHh4crMzFRmZmYdVAQACIjNZwBA4CAYAAAWggEAYCEYAAAWggEAYCEYAAAWggEAYCEYAAAWggEAYCEYAAAWggEAYCEYAAAWggEAYCEYAAAWggEAYCEYAAAWggEAYCEYAAAWggEAYCEYAAAWggEAYAn2dwGBIPHB12r0+oNz+tdSJQDgf6wYAAAWggEAYCEYAAAWggEAYCEYAAAWggEAYCEYAAAWPscAQBKf58G/sWIAAFgIBgCAhWAAAFgIBgCAxa/B8O6772rgwIFq2bKlHA6H1q1bZ/UbYzRjxgzFx8crIiJCKSkp2rt3r3+KBYDzhF+Doby8XFdccYUyMzNP2z937lw9/fTTys7O1tatW9WoUSOlpqaqoqKijisFgPOHX29X7devn/r163faPmOMFixYoEceeUSDBg2SJC1fvlyxsbFat26dhg0bVpelAsB5I2D3GL766is5nU6lpKR42qKjo9WjRw/l5eWd8XUul0tlZWXWAQA4ewEbDE6nU5IUGxtrtcfGxnr6TicjI0PR0dGeIyEhwad1AkB9E7DB4K3p06ertLTUcxw6dMjfJQHA70rABkNcXJwkqbi42GovLi729J1OWFiYoqKirAMAcPYCNhiSkpIUFxen3NxcT1tZWZm2bt2q5ORkP1YGAPWbX+9KOn78uPbt2+c5/+qrr7Rr1y41a9ZMbdq00ZQpU/TEE0+offv2SkpK0qOPPqqWLVtq8ODB/isaAOo5vwbD9u3bdcMNN3jO09PTJUmjRo3S0qVLdf/996u8vFzjxo1TSUmJ+vTpo40bNyo8PNxfJQNAvefXYLj++utljDljv8Ph0KxZszRr1qw6rAoAzm8Bu8cAAPAPggEAYCEYAAAWggEAYCEYAAAWggEAYCEYAAAWv36OAYEj8cHXavT6g3P611IlAPyNFQMAwEIwAAAsBAMAwMIeAwAEiEDZ62PFAACwEAwAAAvBAACwEAwAAAvBAACwEAwAAAvBAACwEAwAAAvBAACwEAwAAAvBAACwEAwAAAvBAACwEAwAAAvBAACwEAwAAAvBAACwEAwAAAvBAACwEAwAAAvBAACw/C6CITMzU4mJiQoPD1ePHj300Ucf+bskAKi3Aj4YVq1apfT0dM2cOVM7d+7UFVdcodTUVH3zzTf+Lg0A6qWAD4Z58+bp7rvv1pgxY9SpUydlZ2erYcOGWrJkib9LA4B6KaCDobKyUjt27FBKSoqnLSgoSCkpKcrLy/NjZQBQfwX7u4Bf8+2336q6ulqxsbFWe2xsrP75z3+e9jUul0sul8tzXlpaKkkqKys74zxu14ka1flrY58Nf88fCDWc7/MHQg3MX7P5A6GGX5v/pz5jzG8PZALYkSNHjCTz4YcfWu1/+tOfzNVXX33a18ycOdNI4uDg4OA4zXHo0KHf/N0b0CuGCy64QA0aNFBxcbHVXlxcrLi4uNO+Zvr06UpPT/ecu91uff/994qJiZHD4TjnGsrKypSQkKBDhw4pKirqnF9fU/6ePxBqON/nD4Qazvf5A6GGms5vjNGxY8fUsmXL37w2oIMhNDRUXbt2VW5urgYPHizp5C/63NxcTZw48bSvCQsLU1hYmNXWpEmTGtcSFRXlt3+QgTB/INRwvs8fCDWc7/MHQg01mT86OvqsrgvoYJCk9PR0jRo1St26ddPVV1+tBQsWqLy8XGPGjPF3aQBQLwV8MNx+++06evSoZsyYIafTqS5dumjjxo2nbEgDAGpHwAeDJE2cOPGMbx35WlhYmGbOnHnK21Pny/yBUMP5Pn8g1HC+zx8INdTl/A5jzubeJQDA+SKgP+AGAKh7BAMAwEIwAAAsBANwFtiKw/nkd3FXUl369ttvtWTJEuXl5cnpdEqS4uLi1KtXL40ePVrNmzf3c4Xwh7CwMH3yySfq2LGjv0vBeaKoqEhZWVl6//33VVRUpKCgIF144YUaPHiwRo8erQYNGvhsbu5K+plt27YpNTVVDRs2VEpKiuezEsXFxcrNzdWJEye0adMmdevWzW81Hjp0SDNnzvTp147/61//0o4dO9SsWTN16tTJ6quoqNDq1as1cuRIn83/5ZdfasuWLUpOTlaHDh30z3/+UwsXLpTL5dKIESPUt29fn839869T+bmFCxdqxIgRiomJkXTy6+DrSnl5uVavXq19+/YpPj5ed9xxh6cOX9i5c6eaNm2qpKQkSdLzzz+v7OxsFRQUqG3btpo4caKGDRvms/knTZqkoUOH6pprrvHZHGfjmWee0UcffaRbbrlFw4YN0/PPP6+MjAy53W4NGTJEs2bNUnCwb/623r59u1JSUtSuXTtFREQoLy9Pd955pyorK7Vp0yZ16tRJGzduVGRkpE/mD+gv0atrPXr0MOPGjTNut/uUPrfbbcaNG2d69uzph8r+bdeuXSYoKMhn4+fn55u2bdsah8NhgoKCzLXXXmsKCws9/U6n06fzb9iwwYSGhppmzZqZ8PBws2HDBtO8eXOTkpJi+vbtaxo0aGByc3N9Nr/D4TBdunQx119/vXU4HA7TvXt3c/3115sbbrjBZ/MbY0zHjh3Nd999Z4wxpqCgwCQmJpro6GjTvXt306xZM9OiRQtz4MABn83fuXNn88YbbxhjjHnuuedMRESEuffee01WVpaZMmWKady4sVm8eLHP5v/p31779u3NnDlzTFFRkc/mOpPHH3/cREZGmrS0NBMXF2fmzJljYmJizBNPPGFmz55tmjdvbmbMmOGz+Xv37m0ee+wxz/nzzz9vevToYYwx5vvvvzddunQx9957r8/mJxh+Jjw83Hz55Zdn7P/yyy9NeHi4T2t45ZVXfvWYP3++T38xDx482PTv398cPXrU7N271/Tv398kJSWZr7/+2hjj+2BITk42Dz/8sDHGmJdeesk0bdrUPPTQQ57+Bx980Nx0000+mz8jI8MkJSWdEj7BwcHm888/99m8P+dwOExxcbExxpjhw4ebXr16mZKSEmOMMceOHTMpKSnmjjvu8Nn8ERER5uDBg8YYY6688krz7LPPWv0vvvii6dSpk8/mdzgc5s033zSTJ082F1xwgQkJCTH/8R//YdavX2+qq6t9Nu/PXXTRReYf//iHMebkH2MNGjQwL7zwgqd/7dq1pl27dj6bPyIiwuzfv99zXl1dbUJCQozT6TTGGPP666+bli1b+mx+guFnEhMTzbJly87Yv2zZMtO2bVuf1vDTX0sOh+OMhy9/Mbdo0cJ8+umnnnO3223Gjx9v2rRpY/bv3+/zYIiKijJ79+41xpz8P0NwcLDZuXOnp3/37t0mNjbWZ/MbY8xHH31kLr74YnPfffeZyspKY4z/guHCCy80r7/+utX/wQcfmISEBJ/NHxMTY7Zv326MOfnvYdeuXVb/vn37TEREhM/m//nPX1lZaVatWmVSU1NNgwYNTMuWLc1DDz3k+TfiKxEREZ4/howxJiQkxHz22Wee84MHD5qGDRv6bP62bdua999/33NeWFhoHA6HOXHihDHGmK+++sqnf6RyV9LPTJs2TePGjdPkyZP16quvauvWrdq6dateffVVTZ48WePHj9f999/v0xri4+O1du1aud3u0x47d+706fz/+te/rPdNHQ6HsrKyNHDgQF133XXas2ePT+f/aU7p5NP6wsPDrW+EjIyM9Dx8yVe6d++uHTt26OjRo+rWrZs+++wzr76yvSZ+mq+iokLx8fFWX6tWrXT06FGfzd2vXz9lZWVJkq677jr9/e9/t/pXr16tdu3a+Wz+nwsJCdHQoUO1ceNGHThwQHfffbdefPFFXXLJJT6dNy4uTl988YUkae/evaqurvacS9Lnn3+uFi1a+Gz+wYMHa/z48dq4caM2b96s4cOH67rrrlNERIQkKT8/X61atfLZ/KwYfmHlypWmR48eJjg42PMXenBwsOnRo4dZtWqVz+cfOHCgefTRR8/Yv2vXLuNwOHw2f/fu3c3y5ctP2zdhwgTTpEkTn64YOnfubDZs2OA53717t6mqqvKcv/vuuyYpKcln8//SSy+9ZGJjY01QUFCdrhguv/xyc+WVV5rGjRubv//971b/O++8Y1q1auWz+Y8cOWISExPNtddea9LT001ERITp06ePufvuu821115rQkNDzWuvveaz+X++Yjgdt9t9yiqqtj3yyCOmefPm5j//8z9NUlKSefDBB02bNm1MVlaWyc7ONgkJCWbq1Kk+m//YsWNm6NChnt9DvXr1svaVNm3aZFavXu2z+bkr6Qyqqqr07bffSjr5wKCQkJA6mfe9995TeXm5br755tP2l5eXa/v27bruuut8Mn9GRobee+89/d///d9p+++55x5lZ2fL7Xb7ZP7s7GwlJCSof//+p+1/6KGH9M033+h//ud/fDL/6Rw+fNjz7PFGjRr5fL4///nP1nnPnj2VmprqOf/Tn/6kw4cP66WXXvJZDSUlJZozZ47Wr1+vAwcOyO12Kz4+Xr1799bUqVN9emdeUlKStm/f7tM7r36L2+3WnDlzlJeXp169eunBBx/UqlWrdP/99+vEiRMaOHCgnnnmGZ//e6ioqNCPP/6oxo0b+3SeXyIYAAAW9hgAABaCAQBgIRgAABaCAQBgIRiAWuZwOLRu3bqzvv7tt9+Ww+FQSUmJz2oCzgXBAJyl0aNHy+FwyOFwKCQkRLGxsbrpppu0ZMkS6/bdoqIi9evX76zH7dWrl4qKijwf5Fu6dKmaNGlS2+UDZ41gAM7BzTffrKKiIh08eFAbNmzQDTfcoMmTJ2vAgAH68ccfJZ381Oy5PLA9NDRUcXFxdf7pauBMCAbgHISFhSkuLk6tWrXSVVddpYceekivvPKKNmzYoKVLl0o69a2kDz/8UF26dFF4eLi6deumdevWyeFwaNeuXZLst5LefvttjRkzRqWlpZ7VyWOPPVbnPyfObwQDUEN9+/bVFVdcobVr157SV1ZWpoEDB+ryyy/Xzp079fjjj+uBBx4441i9evXSggULFBUVpaKiIhUVFWnatGm+LB84BU9wA2pBhw4d9Omnn57SvmLFCjkcDj333HMKDw9Xp06ddOTIEd19992nHSc0NFTR0dFyOByKi4vzddnAabFiAGqBMea0ewT5+fnq3LmzwsPDPW1XX311XZYGnDOCAagFX375pedRmMDvHcEA1NBbb72l3bt3Ky0t7ZS+Sy65RLt375bL5fK0bdu27VfHCw0NVXV1da3XCZwtggE4By6XS06nU0eOHNHOnTs1e/ZsDRo0SAMGDNDIkSNPuf7OO++U2+3WuHHj9OWXX2rTpk3629/+JklnvD01MTFRx48fV25urr799ludOHHCpz8T8EsEA3AONm7cqPj4eCUmJurmm2/W5s2b9fTTT+uVV15RgwYNTrk+KipK69ev165du9SlSxc9/PDDmjFjhiRZ+w4/16tXL40fP1633367mjdvrrlz5/r0ZwJ+iecxAHXsxRdf9HxW4adHNQKBhNtVAR9bvny5LrzwQrVq1UqffPKJHnjgAQ0dOpRQQMAiGAAfczqdmjFjhpxOp+Lj43XbbbfpL3/5i7/LAs6It5IAABY2nwEAFoIBAGAhGAAAFoIBAGAhGAAAFoIBAGAhGAAAFoIBAGAhGAAAlv8HXbHxAPDz/KQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "imanishi = pd.read_csv(IMANISHI_CSV)\n",
    "imanishi.columns = [c.strip() for c in imanishi.columns]\n",
    "ax = imanishi.plot.bar(x='Digit', y=['Frequency'], legend=False,\n",
    "                      figsize=(4, 4))\n",
    "ax.set_xlabel('Digit')\n",
    "ax.set_ylabel('Frequency')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Power and Sample Size\n",
    "statsmodels has a number of methods for power calculation\n",
    "\n",
    "see e.g.: https://machinelearningmastery.com/statistical-power-and-power-analysis-in-python/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:28.661566Z",
     "iopub.status.busy": "2022-04-26T19:42:28.660330Z",
     "iopub.status.idle": "2022-04-26T19:42:28.669946Z",
     "shell.execute_reply": "2022-04-26T19:42:28.669267Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sample Size: 116602.391\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.10/site-packages/scipy/stats/_continuous_distns.py:6832: RuntimeWarning: invalid value encountered in _nct_sf\n",
      "  return np.clip(_boost._nct_sf(x, df, nc), 0, 1)\n"
     ]
    }
   ],
   "source": [
    "effect_size = sm.stats.proportion_effectsize(0.0121, 0.011)\n",
    "analysis = sm.stats.TTestIndPower()\n",
    "result = analysis.solve_power(effect_size=effect_size, \n",
    "                              alpha=0.05, power=0.8, alternative='larger')\n",
    "print('Sample Size: %.3f' % result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-04-26T19:42:28.673223Z",
     "iopub.status.busy": "2022-04-26T19:42:28.672709Z",
     "iopub.status.idle": "2022-04-26T19:42:28.681809Z",
     "shell.execute_reply": "2022-04-26T19:42:28.681009Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sample Size: 5488.408\n"
     ]
    }
   ],
   "source": [
    "effect_size = sm.stats.proportion_effectsize(0.0165, 0.011)\n",
    "analysis = sm.stats.TTestIndPower()\n",
    "result = analysis.solve_power(effect_size=effect_size, \n",
    "                              alpha=0.05, power=0.8, alternative='larger')\n",
    "print('Sample Size: %.3f' % result)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
